package level01;

import java.lang.reflect.Proxy;

/**
 * 定义一个测试类：Test，包含 main()方法。
 * 要求用动态代理获取 Student 类的代理对象，并执行 coding()方法。
 */
public class Test {
    public static void main(String[] args) {
        //动态代理获取Student类的代理对象
        Person person = (Person) Proxy.newProxyInstance(
                //强转，为了调用这个类或者接口中的方法
                Student.class.getClassLoader(),    // 获取目标类的类加载器（用于加载代理类）
                Student.class.getInterfaces(),    // 目标对象实现的所有接口（代理对象会实现这些接口）
                new MyHandler(new Student())     // 代理对象的调度器（定义方法增强逻辑）
        );
        // 调用代理对象的方法（实际会执行MyHandler中的增强逻辑 + Student的原始方法）
        person.work();

    }
}
